const router = require('express').Router();
const sql = require('./../sql')
const Address = require('./../sql/models/Address')
const utils = require('./../utils')
router.get('/addresslist', (req, res, next) => {
  const { userid } = req.query
  // 新添加的地址在最上面
  sql.sort(Address, { userid }, { _id:0, __V:0}, { createTime: -1}).then(data => {
    // 默认的地址要在第一个
    data.sort((a, b) => b.isDefault - a.isDefault)
    res.status('200').send({
      code: '200',
      message: '地址列表',
      data
    })
  })
})
router.get('/addressDetail',(req,res,next)=>{
  const {addressid}=req.query
  sql.find(Address,{addressid}).then(data=>{
    res.status('200').send({
      code:'200',
      message:'地址详情',
      data
    })
  })
})
router.post('/addAddress', (req, res, next) => {
  const insertData = req.body // 
  // 如果当前地址是第一个添加的地址，不管用户如果选择，都将被设置为默认地址
  // 判断用户添加的是不是默认地址
  // 如果是，先更新所有的地址为 非默认地址
  // 然后再添加新的地址
  if(insertData.addressid){
   //走更新的逻辑
   if (insertData.isDefault){
    sql.update(Address, { userid: insertData.userid }, {$set: {isDefault: false}},1).then(data=>{
      sql.update(Address,{addressid:insertData.addressid},{$set:{
        userName:insertData.userName,
        telNumber:insertData.telNumber,
        provinceName:insertData.provinceName,
        cityName:insertData.cityName,
        countyName:insertData.countyName,
        detailInfo:insertData.detailInfo,
        isDefault:insertData.isDefault
        }}).then(data=>{
         res.status('200').send({
           code:'200',
           message:'更新地址成功'
         })
       })
    })
   }
   else{
    sql.update(Address,{addressid:insertData.addressid},{$set:{
      userName:insertData.userName,
      telNumber:insertData.telNumber,
      provinceName:insertData.provinceName,
      cityName:insertData.cityName,
      countyName:insertData.countyName,
      detailInfo:insertData.detailInfo,
      isDefault:insertData.isDefault
      }}).then(data=>{
       res.status('200').send({
         code:'200',
         message:'更新地址成功'
       })
     })
   }
   
  }else{
   //走插入的逻辑
   insertData.addressid = utils.getUuid()
   sql.count(Address, { userid: insertData.userid }).then(len => {
     if (len === 0) {
       // 第一次添加的地址
      
        insertData.isDefault = true
       
        sql.insert(Address, insertData).then(() => {
          res.status('200').send({
            code: '200',
            message: '添加地址'
          })
        })
      
      
     } else {
       // 判断用户添加的是不是默认地址
       if (insertData.isDefault) {
         // 添加的是默认地址
         // 更新所有的地址为非默认地址
        
          sql.update(Address, { userid: insertData.userid }, {$set: {isDefault: false}},1).then(() => {
            // 再添加地址
           
            sql.insert(Address, insertData).then(() => {
              res.status('200').send({
                code: '200',
                message: '添加地址'
              })
            })
          })
       
         
 
       } else {
         // 添加的不是默认地址 --- 直接添加
         
         
          sql.insert(Address, insertData).then(() => {
            res.status('200').send({
              code: '200',
              message: '添加地址'
            })
          })
        
         
       }
     }
   })
  }
 
  
  
})
router.get('/updateSelected',(req,res,next)=>{
  const {addressid,userid}=req.query
  console.log(addressid,userid)
  
})


module.exports = router